#!/bin/bash

# 定义颜色变量，用于美化输出
GREEN="\033[0;32m"
YELLOW="\033[1;33m"
RED="\033[0;31m"
NC="\033[0m" # 无颜色

# 脚本标题
echo -e "${GREEN}===== 启动Biomni Web应用 ====="
echo -e "启动时间: $(date)"
echo -e "==============================${NC}"

# 检查conda是否可用
if ! command -v conda &> /dev/null; then
    echo -e "${RED}错误: 未找到conda命令，请确保conda已正确安装并配置环境变量${NC}"
    exit 1
fi

# 激活conda环境
echo -e "${YELLOW}正在激活conda环境: biomni_e1${NC}"
source $(conda info --base)/etc/profile.d/conda.sh  # 确保conda命令可用
conda activate biomni_e1

# 检查环境激活是否成功
if [ "$CONDA_DEFAULT_ENV" != "biomni_e1" ]; then
    echo -e "${RED}错误: 无法激活biomni_e1环境，请检查环境是否存在${NC}"
    exit 1
fi

# 定义应用路径
APP_DIR="/home/qcao02/project/Biomni/Biomni/biomni_web"
APP_SCRIPT="start_web.py"
LOG_FILE="biomni.log"

# 检查应用目录是否存在
if [ ! -d "$APP_DIR" ]; then
    echo -e "${RED}错误: 应用目录 $APP_DIR 不存在${NC}"
    exit 1
fi

# 检查启动脚本是否存在
if [ ! -f "$APP_DIR/$APP_SCRIPT" ]; then
    echo -e "${RED}错误: 启动脚本 $APP_DIR/$APP_SCRIPT 不存在${NC}"
    exit 1
fi

# 进入应用目录并启动应用
echo -e "${YELLOW}正在启动Web应用...${NC}"
cd "$APP_DIR" || exit 1

# 检查是否已有相同进程在运行
PID=$(ps aux | grep "$APP_SCRIPT" | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; then
    echo -e "${YELLOW}警告: 检测到应用已在运行，进程ID: $PID${NC}"
    echo -e "${YELLOW}是否终止现有进程并重新启动? (y/n)${NC}"
    read -r response
    if [ "$response" = "y" ] || [ "$response" = "Y" ]; then
        kill -9 "$PID"
        echo -e "${YELLOW}已终止现有进程${NC}"
    else
        echo -e "${GREEN}已取消启动操作${NC}"
        exit 0
    fi
fi

# 启动应用
nohup python "$APP_SCRIPT" > "$LOG_FILE" 2>&1 &

# 检查启动是否成功
sleep 2
NEW_PID=$(ps aux | grep "$APP_SCRIPT" | grep -v grep | awk '{print $2}')
if [ -n "$NEW_PID" ]; then
    echo -e "${GREEN}应用启动成功!${NC}"
    echo -e "${GREEN}进程ID: $NEW_PID${NC}"
    echo -e "${GREEN}日志文件: $APP_DIR/$LOG_FILE${NC}"
    echo -e "${GREEN}可以使用以下命令查看日志: tail -f $LOG_FILE${NC}"
else
    echo -e "${RED}应用启动失败，请查看日志文件: $APP_DIR/$LOG_FILE${NC}"
    exit 1
fi
